package ctr.eleve;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import jdbc.Connexion;
import metier.Eleve;
import metier.Stage;
import metier.jdbc.EleveJdbc;
import vue.MenuControle;
import vue.eleve.JPanSupprimerEleve;
import configuration.Constante;
import configuration.MessageAppli;

public class GestSupprimerEleve implements ActionListener {

	private JPanSupprimerEleve jPanSupprimerEleve;
	
	@Override
	public void actionPerformed(ActionEvent actionEvent) {
		if (actionEvent.getSource() instanceof JButton) {
			rechercherEleve();
		}
	}
	
	/**
	 * @param jPanSupprimerEleve
	 */
	public GestSupprimerEleve(JPanSupprimerEleve jPanSupprimerEleve){
		this.jPanSupprimerEleve = jPanSupprimerEleve;
	}
	
	/**
	 * Rechercher l'eleve.
	 */
	private void rechercherEleve(){
		String nom = null;
		String prenom = null;
		Stage stage = null;
		
		// Test nom
		JTextField jtextNom = jPanSupprimerEleve.getSaisiRechercheNomEleve();
		if (!jtextNom.getText().matches(Constante.REGEX_ALPHANUM)) {
			JOptionPane.showMessageDialog(null, MessageAppli.MSG_CHAMPS_ALPHANUM, MessageAppli.MSG_TITRE_ERREUR_SAISIE, JOptionPane.WARNING_MESSAGE);
		}else{
			nom = jtextNom.getText();
		}
		
		// Test prenom
		JTextField jtextPrenom = jPanSupprimerEleve.getSaisiRecherchePrenomEleve();
		if (!jtextPrenom.getText().matches(Constante.REGEX_ALPHANUM)) {
			JOptionPane.showMessageDialog(null, MessageAppli.MSG_CHAMPS_ALPHANUM, MessageAppli.MSG_TITRE_ERREUR_SAISIE, JOptionPane.WARNING_MESSAGE);
		}else{
			prenom = jtextPrenom.getText();
		}
		
		// Recuperation du Stage
		// Ne peut pas etre null, puisque comboBox. Il y a forcement un stage de séléctionné par défaut.
		if (jPanSupprimerEleve.getSaisiRechercheStage().getSelectedItem() != null ){
			stage = (Stage) jPanSupprimerEleve.getSaisiRechercheStage().getSelectedItem();
		}
		
		if ( !"".equals(nom) && !"".equals(prenom) ){
			// Recherche de l'eleve.
			Eleve eleveRechercher = new Eleve (null, nom, prenom, null, null,((stage!=null)?stage.getIdStage():null), null);
			Eleve eleve = EleveJdbc.rechercherEleve(Connexion.getConnexion(), eleveRechercher);
			if ( eleve != null ){
				// Demande de confirmation.
				int reponse = JOptionPane.showConfirmDialog(jPanSupprimerEleve, MessageAppli.MSG_ELEVE_CONFIRM_SUPP, MessageAppli.MSG_TITRE_INFO, JOptionPane.OK_CANCEL_OPTION);
				if (reponse == 0){
					// Suppression.
					if ( EleveJdbc.supprimer(Connexion.getConnexion(), eleve) ){
						// Message de confirmation de suppression.
						JOptionPane.showMessageDialog(jPanSupprimerEleve, MessageAppli.MSG_ELEVE_SUPP_CONFIRME, MessageAppli.MSG_TITRE_INFO, JOptionPane.INFORMATION_MESSAGE);
						MenuControle.afficherPan(new JPanSupprimerEleve(jPanSupprimerEleve.getTitre()));
					}else{
						JOptionPane.showMessageDialog(jPanSupprimerEleve, MessageAppli.MSG_ELEVE_PB_SUPPRESSION, MessageAppli.MSG_TITRE_INFO, JOptionPane.INFORMATION_MESSAGE);
					}
				}
			}else{
				JOptionPane.showMessageDialog(jPanSupprimerEleve, MessageAppli.MSG_ELEVE_INEXSITANT, MessageAppli.MSG_TITRE_INFO, JOptionPane.WARNING_MESSAGE);
				MenuControle.afficherPan(new JPanSupprimerEleve(jPanSupprimerEleve));
			}
		}
	}
}
